草庐IT

c++ - Windows 上的 CMake

全部标签

windows - 如何在 Windows 中删除自身(可执行文件)?

packagemainimport"os"funcmain(){err:=os.Remove(os.Args[1])iferr!=nil{panic(err)}}编译这个GOOS=windowsGOARCH=386gobuildtest.go然后用wine运行Z:\tmp>test.exetest.exefixme:process:SetProcessPriorityBoost(0xffffffff,1):stubpanic:removetest.exe:Accessdenied.goroutine1[running]:panic(0x462c40,0x5b3f9ca0)/usr/lo

Goroutine 在 Windows 和 Linux 上的行为不同

我是GO的新手。我有以下遗留代码。vardb*sql.DBfuncinit(){gofeedChan()connString:=os.Getenv("DB_CONN")varerrerrordb,err=sql.Open("postgres",connString)iferr!=nil{log.Fatalf("Failedtoconnecttodatabaseat%q:%q\n",connString,err)}//confirmconnectioniferr=db.Ping();err!=nil{log.Fatalf("Unabletopingdatabaseat%q:%q\n",c

c - "go-vgo/robotgo"库构建错误

我正在尝试构建“go-vgo/robotgo”库。我已经按照每个步骤进行操作,例如下载“mingw”(32位)并添加“zlib,pnglib”zlib&libpngWindows32GCC'sCourse就像声明的那样。但是当我尝试使用此命令从cmd获取它时,去获取github.com/go-vgo/robotgo它显示了一个巨大的错误列表。谁能帮帮我。我正在使用Windows10(64位)和1.7.3(x86)。从cmd复制的错误如下,>G:\ProgramFiles\Go32>gogetgithub.com/go-vgo/robotgo\#>github.com/go-vgo/ro

go - WriteMessage 上的 Websocket 失败

我正在构建一个简单的Slackbot作为Go的学习体验,我遇到了我的第一个障碍:我无法将消息写回连接!这是我的主要功能:funcmain(){conn,botId,err:=slackInit(os.Getenv("SLACKBOT_TOKEN"))iferr!=nil{return}deferconn.Close()for{_,event,err:=conn.ReadMessage()iferr!=nil{fmt.Println("Errorprocessingmessage:",err)return}fmt.Println(string(event))message,err:=sl

windows - 如何从剪贴板内存 (uintptr) 中检索图像数据缓冲区?

我正在尝试将系统调用与user32.dll结合使用以获取剪贴板的内容。我希望它是来自打印屏幕的图像数据。现在我得到了这个:ifopened:=openClipboard(0);!opened{fmt.Println("FailedtoopenClipboard")}handle:=getClipboardData(CF_BITMAP)//getbufferimg,_,err:=Decode(buffer)我需要使用句柄将数据放入可读缓冲区。我从github上的AllenDang/w32和atotto/clipboard获得了一些灵感。基于atotto的实现,以下内容适用于文本:text

c - Golang C (.so) 在调用时导入分段违规

您好,我将在Linux环境中使用带有golang的第三方库(.so文件)。所以我试着用一些微不足道的东西来练习一下,比如从linux原生库中导入函数。并卡在导入和调用sqrt函数上。这是我的代码:packagemain//#cgoLDFLAGS:-ldl//#include//#includeimport"C"import"fmt"funcmain(){export_name:="sqrt"lib_path:="/lib/libm.so.6"//Loading.sohandle:=C.dlopen(C.CString(lib_path),C.RTLD_LAZY)ifhandle==ni

go - 在 windows 上运行 linux 的编译代码

所以我在Windows(10)forLinux上交叉编译了Go代码,我实际上能够在Windows和Linux上运行相同的可执行文件,这怎么可能? 最佳答案 那就是新的WindowsSubsystemforLinux(WSL),可以在Windows10上本地运行LinuxELF二进制文件。 关于go-在windows上运行linux的编译代码,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

c - Go 语言使用 C 的内部结构

我希望能够在Go中将一个主机地址(让我们使用“www.google.be”)转换为sockaddr结构,然后在C代码中使用它。使用http://github.com/jbenet/go-sockaddr将主机地址转换为sockaddr_any结构并不难模块。我的代码有效,如下所示:ipAddr,_:=net.ResolveIPAddr("ip","www.google.be")sockAddr:=sockaddrnet.IPAddrToSockaddr(ipAddr)rawSockaddr,socklen,_:=sockaddr.SockaddrToAny(sockAddr)cStru

CGO 我正在传递一个 C 结构,它带有一个指向 go 函数的值的指针,

我很疑惑下面的场景是否需要清理内存?我有一个C函数,它创建一个C结构并将其传递给Go函数。C结构包含一个值数组(使用指针算法)。Go函数填充此数组并返回。在调用C函数中,我将值从C结构中复制出来并且不存储它们。因为这是在Go中创建的,所以垃圾会被收集吗?/*Ccode*/intgo_func(c_struct*s);structc_struct{val*values;size_t*values_cnt;};voidexample_call(){structc_structs;go_func(&s)copy_values(s)}/*gocode*/funcgo_func(c*C.c_st

go - Gradle 上的全局变量声明

我有一个gradle任务如下。在开始构建之前设置GOPATH。当我运行第二个任务时,即runUnitTest并且未在该block内设置GOPATH,我看到此错误“未设置$GOPATH”。taskgoBuild(type:Exec){environment'GOPATH',projectDir.toString().split("/src")[0]commandLine"go","build","main.go"}taskrunUnitTest(type:Exec){dependsOngoBuildcommandLine"go","get","github.com/AlekSi/goco